"""
写一个计数器类，可以加，可以减

num2为10不变，num1取10，100，1000，10000，其结果都为0。
num1为10不变，num2取10，100，1000，10000，其结果为0，0，不确定，不确定。
"""

import threading
import time


# 加法和减法
class Counter:
    def __init__(self):
        self._val = 0

    def add(self):
        self._val += 1

    def sub(self):
        self._val -= 1

    @property
    def show(self):
        return self._val


# 实例化一个"加法和减法"的实例
d = Counter()


# 运算规则
def run(fn: Counter, count=100):
    for _ in range(count):
        for i in range(-50, 50):
            if i < 0:
                fn.sub()
            else:
                fn.add()


# num1，定义线程个数：越大线程越多。
# num2，定义单线程运算次数：越大单线程执行时间越长。
num1 = 10
num2 = 10

for _ in range(num1):
    threading.Thread(target=run, args=(d, num2)).start()

# 主线程持续观察
while True:
    time.sleep(5)
    print(d.show)


